home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / LAN / TIMERA.M < prev   
Encoding:
Text File  |  1991-05-09  |  4.5 KB  |  3 lines

  1. ⓪ MODULE TimerA;⓪ (*$Z+,R-*)⓪ ⓪ (*⓪!* Der MFP ist mit 2.4576 MHz getaktet.⓪!* Da "bitTime" 4.34µs ist und das kleinste benötigte Delay 1.5*bitTime,⓪!* ergibt das genau 16 Timer-Zyklen. Diese sind über einen Teiler von 4⓪!* oder 16 zu erreichen.⓪!*)⓪ ⓪ (*$E MOS *) IMPORT TOSIO; FROM InOut IMPORT Write, WriteCard;⓪ ⓪ FROM SYSTEM IMPORT ASSEMBLER;⓪ FROM GEMDOS IMPORT Super;⓪ ⓪ ⓪ PROCEDURE Delay1Bit;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(; Delay: 1.5 * bitTime (6.51µs) = 16 Zyklen⓪(MOVEA.W #$FA00,A0⓪(MOVE.B  #$DF,$0B(A0)    ; IPRA: Clear Timer-A Pending Bit⓪(MOVE.B  #4,$1F(A0)      ; TADR: Set Timer Count⓪(MOVE.B  #1,$19(A0)      ; TACR: Timer Start (Teiler: 1/4)⓪%l: BTST    #5,$0B(A0)      ; IPRA⓪(BEQ     l⓪(MOVE.B  #$00,$19(A0)    ; TACR: Timer Stop⓪$END⓪"END Delay1Bit;⓪"(*$L=*)⓪ ⓪ PROCEDURE Delay1Byte;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(; Delay: 1.5 * byteTime (39µs) = 58 Zyklen⓪(MOVEA.W #$FA00,A0⓪(MOVE.B  #$DF,$0B(A0)    ; IPRA: Clear Timer-A Pending Bit⓪(MOVE.B  #35,$1F(A0)     ; TADR: Set Timer Count⓪(MOVE.B  #1,$19(A0)      ; TACR: Timer Start (Teiler: 1/4)⓪%l: BTST    #5,$0B(A0)      ; IPRA⓪(BEQ     l⓪(MOVE.B  #$00,$19(A0)    ; TACR: Timer Stop⓪$END⓪"END Delay1Byte;⓪"(*$L=*)⓪ ⓪ PROCEDURE DelayBytes (n: CARDINAL);⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(; Delay: n * 1.5 * byteTime (39µs) = n * 58.5 Zyklen⓪(MOVE.W  -(A3),D0        ; n⓪(MOVEA.W #$FA00,A0⓪(MOVE.B  #$DF,$0B(A0)    ; IPRA: Clear Timer-A Pending Bit⓪(MOVE.B  #36,$1F(A0)     ; TADR: Set Timer Count⓪(MOVE.B  #1,$19(A0)      ; TACR: Timer Start (Teiler: 1/4)⓪(BRA     s⓪%l: BTST    #5,$0B(A0)      ; IPRA⓪(BEQ     l⓪(MOVE.B  #$DF,$0B(A0)    ; IPRA: Clear Timer-A Pending Bit⓪%s: DBRA    D0,l⓪(MOVE.B  #$00,$19(A0)    ; TACR: Timer Stop⓪$END⓪"END DelayBytes;⓪"(*$L=*)⓪ ⓪ PROCEDURE Delay (teiler, count: CARDINAL);⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(MOVEA.W #$FA00,A0⓪(MOVE.B  #$DF,$0B(A0)    ; IPRA: Clear Timer-A Pending Bit⓪(MOVE.W  -(A3),D0⓪(MOVE.W  -(A3),D1⓪(MOVE.B  D0,$1F(A0)      ; TADR: Set Timer Count⓪(MOVE.B  D1,$19(A0)      ; TACR: Timer Start⓪%l: BTST    #5,$0B(A0)      ; IPRA⓪(BEQ     l⓪(MOVE.B  #$00,$19(A0)    ; TACR: Timer Stop⓪$END⓪"END Delay;⓪"(*$L=*)⓪ ⓪ PROCEDURE Start (teiler, count: CARDINAL);⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(MOVEA.W #$FA00,A0⓪(MOVE.B  #$DF,$0B(A0)    ; IPRA: Clear Timer-A Pending Bit⓪(MOVE.W  -(A3),D0⓪(MOVE.W  -(A3),D1⓪(MOVE.B  D0,$1F(A0)      ; TADR: Set Timer Count⓪(MOVE.B  D1,$19(A0)      ; TACR: Timer Start⓪%l: END⓪"END Start;⓪"(*$L=*)⓪ ⓪ PROCEDURE Stop;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(MOVE.B  #$00,$FFFA19    ; TACR: Timer Stop⓪$END⓪"END Stop;⓪"(*$L=*)⓪ ⓪ PROCEDURE Down (): BOOLEAN;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(BTST    #5,$FFFA0B      ; IPRA⓪(BEQ     no⓪(BCLR    #5,$FFFA0B      ; IPRA: Clear Timer-A Pending Bit⓪(MOVEQ   #1,D0⓪(RTS⓪$no: CLR     D0⓪$END⓪"END Down;⓪"(*$L=*)⓪ ⓪ (* nur mit dieser optimierten Schleife sind auf dem Mega STE die⓪!* 1.5*bitTime zu messen:⓪"Start (1,4);⓪"ASSEMBLER⓪(MOVE.L  n,D1⓪(MOVE.L  l,D0⓪(MOVEQ   #5,D2⓪(LEA     $FFFA0B,A0⓪$lo: BTST    D2,(A0)         ; IPRA⓪(BEQ     lo⓪(BCLR    D2,(A0)         ; IPRA: Clear Timer-A Pending Bit⓪(ADDQ.L  #1,D1⓪(CMP.L   hz200,D0⓪(BHI     lo⓪(MOVE.L  D1,n⓪"END;⓪ *)⓪ ⓪ PROCEDURE Init;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(MOVEA.W #$FA00,A0⓪(MOVE.B  #$00,$19(A0)    ; TACR: Timer Stop⓪(ANDI.B  #$DF,$13(A0)    ; IMRA: Mask Timer A IR⓪(ORI.B   #$20,$07(A0)    ; IERA: Enable Timer-A Pending Bit⓪(MOVE.B  #$DF,$0B(A0)    ; IPRA: Clear Timer-A Pending Bit⓪$END⓪"END Init;⓪ ⓪ VAR n, l, hz200[$4BA]: LONGCARD;⓪$sr: CARDINAL;⓪$ssp: LONGINT;⓪ ⓪ BEGIN⓪"ssp:= Super (0);⓪"Init;⓪"n:= 0;⓪"ASSEMBLER MOVE SR,sr MOVE #$2500,SR END;⓪"l:= hz200 + 200; (* 1s *)⓪"(*⓪"Start (1,4);⓪"REPEAT⓪$IF Down () THEN⓪&INC (n);⓪$END;⓪"UNTIL hz200 >= l;⓪"*)⓪"Stop;⓪"ASSEMBLER MOVE sr,SR END;⓪"WriteCard (n, 0);⓪"ssp:= Super (ssp)⓪ END TimerA.⓪ ə
  2. (* $FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0Ç$00000DF3T.......T.......T.......T.......TT......T.......T.......T.......T.......T.......$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$00000EC0$FFF006F0$00000DF3$FFF006F0$FFF006F0$FFF006F0œÇé*)
  3.